home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Archives
/
ForCLI
/
flp_by_anp.lha
/
FLP_BY_ANP
/
Delay.doc
< prev
next >
Wrap
Text File
|
1996-02-24
|
6KB
|
137 lines
*****************************************************************************
* Project Details *
* --------------- *
* Project Name: Delay *
* Project Version: 1 *
* Copyright: Anthony N Peck *
* Date: Sunday 21st May 1995 *
* *
* Contact: *
* 68 Woralul St *
* Waramanga ACT 2611 *
* Australia *
* *
* E-Mail: Anthony.Peck@Radford.act.edu.au *
* *
*****************************************************************************
* Summary *
* ------- *
* *
* Usage: Delay <secs> *
* *
* This little program simply goes away and waits the specified time. Like *
* WAIT but a lot simpler! Used in script files, it will enhance your love *
* life and rid your house of pests. The program, the source and in fact *
* my warmest regards are all yours FOC. *
* *
*****************************************************************************
; Some Quick equivalents...
ExecBase = $04 ; Exec Base...ahem
LF = $0A ; ASCII character (Line Feed)
SZMess = $3C ; Size of error message
_LVOOpenlibrary = -$0228 ; Exec function opens libraries
_LVOCloselibrary = -$019E ; Exec function closes libraries
_LVODelay = -$C6 ; Dos function causes a delay
_LVOWrite = -$30 ; Dos function
_LVOOutput = -$3C ; Dos function
; A couple of Macros...
EXEC Macro
MOVE.L ExecBase,A6 ; Move Exec into a6
JSR _LVO\1(A6) ; Add Library offset and call function
Endm
CALLDOS Macro
MOVE.L _DosBase,A6 ; Move Dos into a6
JSR _LVO\1(A6) ; Add Library offset and call function
Endm
Start:
; The program starts here. The number of supplied parameters is
; found in D0 and the actual parameters are in a list at a location
; found in A0.
SUBQ.B #$01,D0 ; Subtract the first parameter
MOVE.L D0,D5 ; Move the number remaining to D5
MOVE.L A0,A5 ; Move the parameter address to A5
OpenDos:
LEA Dosname,A1 ; Load the dos library
MOVE.L #$00,D0 ; Any version will do
EXEC Openlibrary ; Macro opens library
BEQ Exit ; If there's a problem, close down
MOVE.L D0,_DosBase ; Save the return address
TestParam:
; We test the parameter passed and convert it from Ascii to Hex
TST.B D5 ; Test if we have any parameters
BEQ Error ; If not then go write the message
CLR.L D1 ; Clear D1
CLR.L D0 ; Clear D0
1$ CLR.L D0 ; Clear D0
MOVE.B (A5)+,D0 ; Move the first parameter to D0
CMP.B #LF,D0 ; Is it a LineFeed?
BEQ GoTime ; Yep, so finished and outta here ->
SUB.B #$30,D0 ; Subtract "0"
CMP.B #$0A,D0 ; Compare with the value "10"
BCC GoTime ; Greater than zero, must be a char
MULU #$0A,D1 ; Multiply the previous entry by "10"
ADD D0,D1 ; Add current number to D1
BRA 1$ ; And back for more digital fun...
GoTime:
TST.B D1 ; Test if we have a number!
BEQ Error ; Nope...I'm outta here ->
MULU #$32,D1 ; Multiply number by ticks (50/sec)
CALLDOS Delay ; Call the Delay function
Close:
MOVE.L _DosBase,A1 ; Move dos base into a1
EXEC Closelibrary ; Macro closes dos
Exit:
CLR.L D0 ; Clear D0
RTS ; Return To System
Error:
CALLDOS Output ; Call the output function
BEQ Close ; No can do so outta here ->
MOVE.L D0,D1 ; else shift output handle to D1
MOVE.L #Message,D2 ; This is the message...
MOVE.L #SZMess,D3 ; ...plus the length of the message...
CALLDOS Write ; ..and write it
BRA Close ; I'm gone ->
_DosBase:
DC.L $1 ; Memory for Dos Base
Dosname:
DC.B "dos.library",$00 ; dos library name
Message:
DC.B LF," " ;
DC.B "Usage:
Delay
" ;
DC.B " <secs> " ; Text of message
DC.B "
A N Peck - 1995
" ;
DC.B LF,LF ;
END